home *** CD-ROM | disk | FTP | other *** search
- // Copyright (C) 1997-2002 Alias|Wavefront,
- // a division of Silicon Graphics Limited.
- //
- // The information in this file is provided for the exclusive use of the
- // licensees of Alias|Wavefront. Such users have the right to use, modify,
- // and incorporate this code into other products for purposes authorized
- // by the Alias|Wavefront license agreement, without fee.
- //
- // ALIAS|WAVEFRONT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- // INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- // EVENT SHALL ALIAS|WAVEFRONT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- // CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- // DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- // TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- // PERFORMANCE OF THIS SOFTWARE.
- //
- //
- // Alias|Wavefront Script File
- // MODIFY THIS AT YOUR OWN RISK
- //
- // Creation Date: 11 February 1998
- // Author: cdt
- //
- // Description:
- // This implements the replace node based on attribute names.
- //
-
- proc int arrayMatch( string $array[], string $match )
- {
- for ($item in $array)
- if ($item == $match)
- return true;
-
- return false;
- }
-
- global proc replaceNode( string $originalNode, string $replaceNode )
- {
- // Copy the scalar values
-
- string $originalAttrs[] =
- `listAttr -scalar -multi -read -visible $originalNode`;
-
- string $replaceAttrs[] =
- `listAttr -scalar -multi -write -visible $replaceNode`;
-
- for ($attr in $originalAttrs) {
- if (arrayMatch($replaceAttrs, $attr)) {
- float $value = `getAttr ($originalNode+"."+$attr)`;
- catch(`setAttr ($replaceNode+"."+$attr) $value`);
- }
- }
-
- string $connections[];
-
- // Process the source connections
-
- $connections = `listConnections -source true -destination false
- -connections true -plugs true $originalNode`;
-
- for ($i = 0; $i < size($connections); $i += 2) {
- string $originalPlug = $connections[$i];
- string $srcPlug = $connections[$i+1];
-
- string $replacePlug =
- substitute($originalNode, $originalPlug, $replaceNode);
-
- catch(`connectAttr $srcPlug $replacePlug`);
- }
-
- // Process the destination connections
-
- $connections = `listConnections -source false -destination true
- -connections true -plugs true $originalNode`;
-
- for ($i = 0; $i < size($connections); $i += 2) {
- string $originalPlug = $connections[$i];
- string $dstPlug = $connections[$i+1];
-
- string $replacePlug =
- substitute($originalNode, $originalPlug, $replaceNode);
-
- // First, break connections between original and dstPlug.
- catch(`disconnectAttr $originalPlug $dstPlug`);
-
- catch(`connectAttr $replacePlug $dstPlug`);
- }
- }
-